﻿// owner 蒋家伟

#pragma once
#include "Correspond_home.h"

class QByteArray;
namespace jsdk
{
    // 类别描述 : 所有解码的器的基类
    class CORRESPOND_EXPORT IDataDecodec
    {
    public:
        virtual ~IDataDecodec() {}

        /// \ brief 解码
        /// \ in sourceArray    原始数据
        /// \ out isFinished    表明数据完全解码。如果一包数据并没有完整的在一次通讯中传递完成, 则当前解码器还未失效因该继续接受下一包数据。 note : 用来解决数据包过长的问题。
        /// \ out output        此数据依赖isFinished。当前包数据处理完整，但是缓存中仍存在数据，则表示这个数据是下一包的，应该把数据传递出来。 note : 用来解决粘包问题。
        virtual bool onDecoding(QByteArray&& sourceArray, bool& isFinished, QByteArray& output) = 0;
    };
}